package cjq.demo.thread.ch3_8;

import java.util.List;
import java.util.concurrent.Exchanger;

/**
 * Created by cjianquan on 2016/4/27.
 */
public class Producer  implements Runnable{
    private List<String> buffer;

    private final Exchanger<List<String>> exchanger;

    public Producer(List<String> buffer,Exchanger<List<String>> exchanger){
        this.buffer = buffer;
        this.exchanger = exchanger;
    }

    public void run(){
        int cycle = 1;
        for(int i=0;i<10;i++){
            System.out.println("Producer:Cycle "+cycle);
            for(int j=0;j<10;j++){
                String message = "Event "+((i*10)+j);
                System.out.println("Producer: "+message);
                buffer.add(message);
            }
            try{
                buffer = exchanger.exchange(buffer);
            }catch(InterruptedException e){
                e.printStackTrace();
            }
            System.out.println("Producer: "+buffer.size());
            cycle++;
        }
    }
}
